#!/usr/bin/env python
# -*- coding: utf-8 -*-



import os
import sqlite3

class SQLiteDB:
    """
    初始化数据库连接

    @Author: kindey
    @Date: 2025/6/13
    @Description: SQLites数据库操作工具类
    """
    def __init__(self, db_path: str):
        self.db_path = db_path
        self.conn = None
        self.cursor = None
    def connect(self):
        """
        连接到数据库
        """
        if not os.path.exists(self.db_path):
            raise FileNotFoundError(f"数据库文件 {self.db_path} 不存在")
        self.conn = sqlite3.connect(self.db_path)
        self.cursor = self.conn.cursor()
    def close(self):
        """
        关闭数据库连接
        """
        if self.cursor:
            self.cursor.close()
        if self.conn:
            self.conn.close()
    def execute_query(self, query: str, params: tuple = None):
        """
        执行查询语句

        :param query: SQL 查询语句
        :param params: 参数化查询参数（可选）
        :return: 查询结果列表
        """
        if not self.cursor:
            raise ConnectionError("数据库未连接，请先调用 connect() 方法")
        if params:
            self.cursor.execute(query, params)
        else:
            self.cursor.execute(query)
        return self.cursor.fetchall()
    def execute_non_query(self, query: str, params: tuple = None):
        """
        执行非查询语句（INSERT, UPDATE, DELETE）

        :param query: SQL 语句
        :param params: 参数化语句参数（可选）
        """
        if not self.cursor:
            raise ConnectionError("数据库未连接，请先调用 connect() 方法")
        if params:
            self.cursor.execute(query, params)
        else:
            self.cursor.execute(query)
        self.conn.commit()
    def query_all(self, table_name: str):
        """
        查询表中所有数据

        :param table_name: 表名
        :return: 查询结果列表
        """
        query = f"SELECT * FROM {table_name}"
        return self.execute_query(query)
